package com.government.article.service;

import java.util.List;

import com.government.article.bo.ArticleBO;
import com.government.article.bo.ArticleInformationBO;
import com.government.article.bo.InformationCollectBO;
import com.government.article.domain.Article;
import com.government.article.vo.ArticleInformationVO;
import com.government.article.vo.ArticleVO;
import com.government.article.vo.InformationCollectDetailVO;
import com.government.article.vo.InformationCollectVO;
import com.government.member.domain.UserHobby;

/**
 * 文章Service接口
 *
 * @author system
 * @date 2023-09-20
 */
public interface IArticleService {
    /**
     * 查询文章
     *
     * @param articleId 文章主键
     * @return 文章
     */
    public ArticleVO selectArticleByArticleId(Long articleId);

    /**
     * 查询文章列表
     *
     * @param article 文章
     * @return 文章集合
     */
    List<ArticleInformationVO> selectArticleList(ArticleInformationBO bo);

    /**
     * 新增文章
     *
     * @param article 文章
     * @return 结果
     */
    public int insertArticle(ArticleBO bo);

    /**
     * 修改文章
     *
     * @param article 文章
     * @return 结果
     */
    public int updateArticle(ArticleBO bo);

    /**
     * 批量删除文章
     *
     * @param articleIds 需要删除的文章主键集合
     * @return 结果
     */
    public int deleteArticleByArticleIds(Long[] articleIds);

    /**
     * 删除文章信息
     *
     * @param articleId 文章主键
     * @return 结果
     */
    public void deleteArticleByArticleId(Long[] articleId);

    /**
     * 文章数据处理
     *
     * @param article 文章
     * @return 结果
     */
    public void articleDataHandler();

    /**
     * 处理资讯和政策分类关联关系
     */
    void articlePolicyRelHandler();

    /**
     * 逻辑删除文章
     */
    void deleteArticle(Long[] articleIds);

    /**
     * 点赞收藏
     *
     * @param userHobby
     */
    void favorites(UserHobby userHobby);

    /**
     * 批量取消收藏
     *
     * @param
     */
    void cancelFavorites(List<Long> ids);

    /**
     * 批量关注
     *
     * @param
     */
    void batchFollow(List<Long> ids);

    /**
     * 浏览数添加
     *
     * @param articleId 政策分类信息主键
     * @return 结果
     */
    void browseNumAdd(Long articleId);

//    /**
//     * 根据条件查询资讯汇总
//     *
//     * @param
//     */
//    InformationCollectVO getInformationCollect(InformationCollectBO bo);

    /**
     * 根据条件查询资讯汇总
     *
     * @param
     */
    List<InformationCollectDetailVO> getInformationCollect(InformationCollectBO bo);
}
